package org.demo;

import com.baomidou.mybatisplus.autoconfigure.MybatisPlusAutoConfiguration;
import org.mybatis.spring.mapper.MapperScannerConfigurer;
import org.springframework.beans.factory.support.BeanDefinitionRegistry;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

/**
 * MyBatisPlus的特性其1: 可以不使用 @MapperScan ，也会自动扫描并注册相关类。<p>
 * 原理:
 * <p>
 * 1(不使用@MapperScan):
 * 源码见 {@link MybatisPlusAutoConfiguration.MapperScannerRegistrarNotFoundConfiguration}。
 * 当未注入MapperScannerConfigurer时(同时导致没有注入MapperFactoryBean和MapperScannerConfigurer)，
 * 会导入AutoConfiguredMapperScannerRegistrar，该类实现效果为: 创建一个与SpringBoot的扫描路径一致(packages从beanFactory中获取)，
 * annotationClass设置成Mapper(也就是@Mapper)，再包括其他属性设置的 MapperScannerConfigurer 再返回。
 * <p>
 * 2(使用@MapperScan):
 * 首先@MapperScan上注解了@Import(MapperScannerRegistrar.class)，则会自动注入一个MapperScannerRegistrar，最终再返回一个 MapperScannerConfigurer。
 * 源码则见 {@link MapperScannerConfigurer#postProcessBeanDefinitionRegistry(BeanDefinitionRegistry)}。
 *
 * @author yexi
 */
@SpringBootApplication
//@MapperScan(annotationClass = Mapper.class)
public class MyBatisPlusApplication {

    public static void main(String[] args) {
        SpringApplication.run(MyBatisPlusApplication.class, args);
    }

}